/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package repository;

import beans.PessoaJuridica;
import connection.ConnectionBD;
import interacesRepository.IRepositoryPessoaJuridica;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author DanielC
 */
public class RepositoryPessoaJuridica implements IRepositoryPessoaJuridica{
        private static RepositoryPessoaJuridica instancia;

    private RepositoryPessoaJuridica() {
    }

    public static RepositoryPessoaJuridica getInstancia() {
        if (instancia == null) {
            instancia = new RepositoryPessoaJuridica();
        }
        return instancia;
    }
    

    public void inserir(PessoaJuridica pessoaJuridica) {
        try {

            Statement stmt = ConnectionBD.getInstance().createStatement();
            String linhaSQL = new String();

            linhaSQL = ("INSERT INTO pessoajuridica_tb (CNPJ, IDFORNECEDOR, NOME, EMAIL, RAZAOSOCIAL) "
                    + "VALUES ('"+ pessoaJuridica.getCNPJ()+"',"+ pessoaJuridica.getId()+",'"+
                    pessoaJuridica.getNome()+"','"+pessoaJuridica.getEmail()+"','"+
                    pessoaJuridica.getRazaoSocial()+ "')");

//             if (Main.paramentros.getImprimirSQL() == 1){
//                System.out.println(linhaSQL);
//            }
            System.out.println("Linha SQL -->>"+ linhaSQL);
            stmt.execute(linhaSQL);

            } catch (SQLException ex) {
                Logger.getLogger(RepositoryPessoaFisica.class.getName()).log(Level.SEVERE, null, ex);
            }
    }

    public void excluir(PessoaJuridica pessoaJuridica) {
        try {
            Statement stmt = ConnectionBD.getInstance().createStatement();
            String linhaSQL = ("delete from pessoafisica_tb where IDFORNECEDOR = '" + pessoaJuridica.getId() + "'");
//            System.out.println("Consulta ==>>" + linhaSQL);
            
            
 //             if (Main.paramentros.getImprimirSQL() == 1){
//                System.out.println(linhaSQL);
//            } 
            ResultSet rs = stmt.executeQuery(linhaSQL);
        } catch (SQLException ex) {
            Logger.getLogger(RepositoryFuncionario.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void alterar(PessoaJuridica pessoaJuridica) {
     try {
            Statement stmt = ConnectionBD.getInstance().createStatement();
            String linhaSQL = new String();
            linhaSQL = ("update pessoaJuridica_tb  set nome = '" + pessoaJuridica.getNome()+
                    "', CNPJ = '"+pessoaJuridica.getCNPJ()+ "', email = '"+pessoaJuridica.getEmail()+
                    "', RAZAOSOCIAL = '"+ pessoaJuridica.getRazaoSocial()+
                    "' where IDFORNECEDOR = '"+ pessoaJuridica.getId()+"'");
            
//             if (Main.paramentros.getImprimirSQL() == 1){
//                System.out.println(linhaSQL);
//            }
            System.out.println(" Atualiza SQL => "+ linhaSQL);
             stmt.execute(linhaSQL);
        } catch (SQLException ex) {
            Logger.getLogger(RepositoryPessoaFisica.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public PessoaJuridica consultarPessoaJuridicaID(Integer id) {
        
        PessoaJuridica z = new PessoaJuridica();

        try {
            String linhaSQL = new String("select CNPJ, IDFORNECEDOR, NOME, EMAIL, RAZAOSOCIAL "
                    + "from pessoajuridica_tb pj "
                    + "where pj.IDFORNECEDOR = '" + id + "'");

            Statement stmt = ConnectionBD.getInstance().createStatement();
//            if (Main.paramentros.getImprimirSQL() == 1){
//                System.out.println(linhaSQL);
//            };
            ResultSet rs = stmt.executeQuery(linhaSQL);

            while (rs.next()) {
                z.setCNPJ(rs.getObject(1).toString());
                z.setId((Integer.parseInt(rs.getObject(2).toString())));
                z.setNome(rs.getObject(3).toString());
                z.setEmail(rs.getObject(4).toString());
                z.setRazaoSocial(rs.getObject(5).toString());
            }

        } catch (SQLException ex) {
            Logger.getLogger(RepositoryFuncionario.class.getName()).log(Level.SEVERE, null, ex);
        }
        return z;
    }

    @Override
    public Collection consultarnome(String nome) {
        List c = new ArrayList();

        try {
            //+++++++++++++++++++++++++
             String linhaSQL = new String("select CPF, IDFORNECEDOR, NOME, EMAIL, SEXO, RG "
                    + "from pessoafisica_tb pf "
                    + "where pf.NOME = '" + nome + "'");
                     
            //+++++++++++++++++++
            
            Statement stmt = ConnectionBD.getInstance().createStatement();

//            if (Main.paramentros.getImprimirSQL() == 1){
//                System.out.println(linhaSQL);
//            }

            ResultSet rs = stmt.executeQuery(linhaSQL);

            while (rs.next()) {
                PessoaJuridica z = new PessoaJuridica();
                z.setCNPJ(rs.getObject(1).toString());
                z.setId((Integer.parseInt(rs.getObject(2).toString())));
                z.setNome(rs.getObject(3).toString());
                z.setEmail(rs.getObject(4).toString());
                z.setRazaoSocial(rs.getObject(5).toString());

                c.add(z);
            }

        } catch (SQLException ex) {
            Logger.getLogger(RepositoryFuncionario.class.getName()).log(Level.SEVERE, null, ex);
        }
        return c;    }

    @Override
    public Collection consultartodos() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public int totalCadastrados() {
        Integer resultado = 0;
        try {
            String linhaSQL = new String("SELECT COUNT(*) FROM pessoajuridica_tb");
            Statement stmt = ConnectionBD.getInstance().createStatement();
            ResultSet rs = stmt.executeQuery(linhaSQL);
            while (rs.next()) {
                resultado = Integer.parseInt(rs.getString(1).toString());
            }
            return resultado;
        } catch (SQLException ex) {
            Logger.getLogger(RepositoryFuncionario.class.getName()).log(Level.SEVERE, null, ex);
        }
        return resultado;    }

}
